from dotenv import load_dotenv
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column,TIMESTAMP, Integer, String



load_dotenv()  # 加载 .env 文件中的环境变量

DATABASE_URL = os.getenv("DATABASE_URL")
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)


# 定义基类
Base = declarative_base()

# 定义模型类
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True, autoincrement=True, nullable=False)
    # 设置自增序列起始值为100000
    #id.Sequence('my_table_id_seq', start=100000)
    username = Column(String(50), unique=True, index=True,nullable=False)
    email = Column(String(100), unique=True, index=True,nullable=False)
    password = Column(String(100),nullable=False)
    pushdeer_key = Column(String(100), unique=True) #使用PushDeer

class Match(Base):
    __tablename__ = "matchs"
    id = Column(Integer, primary_key=True, index=True)  # 用FB里的比赛ID
    league = Column(String(50))  # 联赛名称
    home = Column(String(50))
    away = Column(String(100))
    start_time = Column(TIMESTAMP)  # 比赛开始时间
    prediction = Column(String(50))  # 预测结果 如（Over 2.5，Under 3.5 ，Home +1 ，Away -0.5）
    random = Column(String(50))  # 4位的随机大写字母
    hash = Column(String(100))  # home|away|prediction|random|，4个字段SHA256，每个字段之间用|分隔，将哈希公布到外网推特机器人
    score = Column(String(50))  # 赛果
    performance = Column(String(50))  # 预测的表现，Win 或者 Lose ，Win Half 或者 Lose Half
# 创建表 如果表已存在，create_all不会重复创建，除非先删除表。
Base.metadata.create_all(engine)